package com.abner.basis.queue;

import java.util.concurrent.ArrayBlockingQueue;

/**
 * BlockingQueue阻塞队列(先进先出)：
 *      当队列是空时,从队列获取元素的操作会被堵塞
 *      当队列时满时,从队列添加元素的操作会被堵塞
 *
 * @author yuhui
 */
public class BlockingQueueDemo {
    public static void main(String[] args) {

        // 指定队列容量
        ArrayBlockingQueue<Object> queue = new ArrayBlockingQueue<>(3);

        /**
         * add、remove: 当超过容量限制会报错
         * offer、poll: 当超过容量限制会返回false
         * put、take: 当超过容量限制会堵塞
         * offer(e, time, unit)、poll(time, unit): 当超过容量限制会堵塞,到时间自动取消
         */
//        System.out.println(queue.add("a"));
//        System.out.println(queue.add("b"));
//        System.out.println(queue.add("c"));
//
//
//        System.out.println(queue.remove());
//        System.out.println(queue.remove());
//        System.out.println(queue.remove());
//        System.out.println(queue.remove());
        System.out.println(queue.offer("a"));
        System.out.println(queue.offer("a"));
        System.out.println(queue.offer("a"));
        System.out.println(queue.offer("a"));
    }
}
